跳到主要内容

6.2 Micro XRCE-DDS

提示
  1. 为了实现ROS2与PX4通信,需要在RDK X5 Module安装。
  2. v1.14版以上的PX4固件默认包含Micro XRCE-DDS。
  3. 若需要进行SITL开发,推荐在PC端安装。

为了使 ROS 2 与 PX4 通信,uXRCE-DDS Client必须在 PX4 上运行,并连接到配套计算机 RDK X5 Module上运行的Micro XRCE-DDS Agent。

Micro XRCE-DDS Client安装

PX4 uxrce_dds_client在构建时生成,并默认包含在 PX4 固件中,无需额外安装。

Micro XRCE-DDS Agent安装

Micro XRCE-DDS Agent 可以使用二进制包安装在配套计算机上,也可以从源代码构建和安装,或者在 ROS 2 工作区内构建和运行。所有这些方法都会获取与客户端通信所需的所有依赖项(例如 FastCDR)。

信息

官方安装指南是 eProsima: micro XRCE-DDS 安装指南。本节总结了在创建这些文档期间使用 PX4 测试过的选项。

注意

PX4 Micro XRCE-DDS Client 所基于的版本v2.x与最新的 Agent 版本不兼容v3.x

从源代码安装独立版本

在 Ubuntu 上,你可以从源代码构建并使用以下命令安装 Agent 独立版本:

git clone -b v2.4.2 https://github.com/eProsima/Micro-XRCE-DDS-Agent.git
cd Micro-XRCE-DDS-Agent
mkdir build
cd build
cmake ..
make
sudo make install
sudo ldconfig /usr/local/lib/
信息

官方指南中的相应主题链接了各种构建配置选项,但这些选项尚未经过测试。

要启动代理并设置连接到模拟器上运行的 uXRCE-DDS 客户端:

MicroXRCEAgent udp4 -p 8888

从 Snap 包安装

使用以下命令从 Ubuntu 上的 snap 包安装:

sudo snap install micro-xrce-dds-agent --edge

要启动代理,并使用连接到模拟器上运行的 uXRCE-DDS 客户端的设置(请注意,命令名称与您在本地构建代理时的不同):

micro-xrce-dds-agent udp4 -p 8888
信息

在撰写本文时,从 snap 安装的稳定版本可以连接到 PX4,但在创建主题时会报错。使用--edge上面获取的开发版本可以正常工作。

在 ROS 2 工作区内构建/运行

可以在 ROS 2 工作区内构建和启动代理(或独立构建并从工作区启动)。您必须已经按照ROS 2 用户指南 > 安装 ROS 2 中的说明安装了 ROS 2

注意

此方法将使用 Agent 依赖项的现有 ROS 2 版本,例如fastcdrfastdds。这大大加快了构建过程,但要求 Agent 依赖项版本与 ROS 2 版本匹配。

要在 ROS 中构建Agent:

  1. 为代理创建工作区目录:

    mkdir -p ~/px4_ros_uxrce_dds_ws/src
  2. 将 eProsima Micro-XRCE-DDS-Agent的源代码克隆到/src目录(main默认克隆分支):

    cd ~/px4_ros_uxrce_dds_ws/src
    git clone -b v2.4.2 https://github.com/eProsima/Micro-XRCE-DDS-Agent.git
  3. 获取 ROS 2 开发环境,并使用以下命令编译工作区colcon

    source /opt/ros/humble/setup.bash
    colcon build

    /src这将使用源工具链构建其下的所有文件夹。

要在工作区中运行Micro XRCE-DDS Agent:

  1. 提供源local_setup.bash以使可执行文件在终端中可用(即使setup.bash使用新终端)。

    source /opt/ros/humble/setup.bash
    source install/local_setup.bash
  2. 使用连接到模拟器上运行的 uXRCE-DDS 客户端的设置启动代理:

    MicroXRCEAgent udp4 -p 8888